<?php
class classificados {
	private $t_classificados;
	private $registry;
		
	function __construct($registry, $classificados) {
        $this->registry = $registry;
		$this->t_classificados = $classificados;
    }
	
	function lista($indice, $ordena_by='id', $sentido='ASC', $lim=10)
	{
		$offset = ($indice - 1) * $lim;
		$query = "SELECT classificados.*, utilizadores.email, cadeiras.nome as cadeira FROM " . $this->t_classificados . 
		" INNER JOIN utilizadores on classificados.id_utilizador=utilizadores.id " .
		" INNER JOIN cadeiras on classificados.id_cadeira=cadeiras.id " . 
		" ORDER BY " . $ordena_by . " " . $sentido . " limit " . $offset . ", " . $lim ;
		$result = mysql_query($query);
		if(!$result)
		{
			if(Debug)
				echo  mysql_error() . " @ function lista classe classificados<br />";
			echo 'Por motivos técnicos não foi possível processar o seu pedido, por favor informe o administrador se o erro persistir';
			die();
			exit;
		}
		
		if(mysql_num_rows($result) == 0)
		{
			return;
		}
		
		
		$contents = Array();
		while($row = mysql_fetch_array($result, MYSQL_ASSOC))
		{
			$contents[] = $row;
		}
		
		$query = "SELECT classificados.*, utilizadores.email, cadeiras.nome as cadeira FROM " . $this->t_classificados . 
		" INNER JOIN utilizadores on classificados.id_utilizador=utilizadores.id " .
		" INNER JOIN cadeiras on classificados.id_cadeira=cadeiras.id ";
		$result = mysql_query($query);
		if(!$result)
		{
			if(Debug)
				echo  mysql_error() . " @ function lista classe classificados<br />";
			echo 'Por motivos técnicos não foi possível processar o seu pedido, por favor informe o administrador se o erro persistir';
			die();
			exit;
		}
		
		$contents['numrows'] = mysql_num_rows($result);
		
		return $contents;
	}
	
	function pesquisa_simples($q, $indice, $ordena_by='id', $sentido='DESC', $lim=10)
	{
		$offset = ($indice - 1) * $lim;
		$query = "SELECT classificados.*, utilizadores.email, cadeiras.nome as cadeira FROM " . $this->t_classificados .
		" INNER JOIN utilizadores on classificados.id_utilizador=utilizadores.id " .
		" INNER JOIN cadeiras on classificados.id_cadeira=cadeiras.id " . 
		" WHERE cadeiras.nome LIKE '%" . $q . "%'" .
		" OR classificados.data_ad LIKE '%" . $q . "%'" .
		" OR classificados.descricao LIKE '%" . $q . "%'" .
		" OR classificados.titulo LIKE '%" . $q . "%'" .
		" OR utilizadores.email LIKE '%" . $q . "%'" .
		" ORDER BY " . $ordena_by . " " . $sentido . " limit " . $offset . ", " . $lim ;
		
		$result = mysql_query($query);
		if(!$result)
		{
			if(Debug)
				echo  mysql_error() . " @ function lista classe cadeiras<br />";
			echo 'Por motivos técnicos não foi possível processar o seu pedido, por favor informe o administrador se o erro persistir';
			die();
			exit;
		}
		
		if(mysql_num_rows($result) == 0)
		{
			return;
		}
		
		
		$contents = Array();
		while($row = mysql_fetch_array($result, MYSQL_ASSOC))
		{
			$contents[] = $row;
		}
		
		$query2 = "SELECT classificados.*, utilizadores.email, cadeiras.nome as cadeira FROM " . $this->t_classificados .
		" INNER JOIN utilizadores on classificados.id_utilizador=utilizadores.id " .
		" INNER JOIN cadeiras on classificados.id_cadeira=cadeiras.id " . 
		" WHERE cadeiras.nome LIKE '%" . $q . "%'" .
		" OR classificados.data_ad LIKE '%" . $q . "%'" .
		" OR classificados.descricao LIKE '%" . $q . "%'" .
		" OR classificados.titulo LIKE '%" . $q . "%'" .
		" OR utilizadores.email LIKE '%" . $q . "%'";
		$result = mysql_query($query2);
		if(!$result)
		{
			if(Debug)
				echo  mysql_error() . " @ function lista classe cadeiras<br />";
			echo 'Por motivos técnicos não foi possível processar o seu pedido, por favor informe o administrador se o erro persistir';
			die();
			exit;
		}
		
		$contents['numrows'] = mysql_num_rows($result);
		return $contents;
	}
	
	function pesquisa_avancada($q, $field, $indice, $ordena_by='id', $sentido='DESC', $lim=10)
	{
		$offset = ($indice - 1) * $lim;
		$query = "SELECT classificados.*, utilizadores.email, cadeiras.nome as cadeira FROM " . $this->t_classificados .
		" INNER JOIN utilizadores on classificados.id_utilizador=utilizadores.id " .
		" INNER JOIN cadeiras on classificados.id_cadeira=cadeiras.id " . 
		" WHERE " . $field . " LIKE '%" . $q . "%'" .
		" ORDER BY " . $ordena_by . " " . $sentido . " limit " . $offset . ", " . $lim ;
		
		$result = mysql_query($query);
		if(!$result)
		{
			if(Debug)
				echo  mysql_error() . " @ function lista classe cadeiras<br />";
			echo 'Por motivos técnicos não foi possível processar o seu pedido, por favor informe o administrador se o erro persistir';
			die();
			exit;
		}
		
		if(mysql_num_rows($result) == 0)
		{
			return;
		}
		
		
		$contents = Array();
		while($row = mysql_fetch_array($result, MYSQL_ASSOC))
		{
			$contents[] = $row;
		}
		
		$query = "SELECT classificados.*, utilizadores.email, cadeiras.nome as cadeira FROM " . $this->t_classificados .
		" INNER JOIN utilizadores on classificados.id_utilizador=utilizadores.id " .
		" INNER JOIN cadeiras on classificados.id_cadeira=cadeiras.id " . 
		" WHERE " . $field . " LIKE '%" . $q . "%'";
		$result = mysql_query($query);
		if(!$result)
		{
			if(Debug)
				echo  mysql_error() . " @ function lista classe cadeiras<br />";
			echo 'Por motivos técnicos não foi possível processar o seu pedido, por favor informe o administrador se o erro persistir';
			die();
			exit;
		}
		
		$num = mysql_fetch_array($result, MYSQL_ASSOC);
		$contents['numrows'] = mysql_num_rows($result);
		
		return $contents;
	}
	
	function get_byField($field_value, $field)
    {
    	$sql = "SELECT classificados.*, utilizadores.email, cadeiras.nome as cadeira FROM " . $this->t_classificados .
		" INNER JOIN utilizadores on classificados.id_utilizador=utilizadores.id " .
		" INNER JOIN cadeiras on classificados.id_cadeira=cadeiras.id " .
    	" WHERE classificados." . $field . "='" . $field_value . "'"; 
    	
		$result = mysql_query($sql);
		// Mysql_num_row is counting table row		
    	if(!$result)
		{
			if(Debug)
				echo  mysql_error() . " @ function getbyField <br />";
			echo 'Por motivos técnicos não foi possível processar o seu pedido, por favor informe o administrador se o erro persistir';
			die();
			exit;
		}
		
		
		//a query dererá retornar unicamente um registo
		if( mysql_num_rows($result) != 1)
		{
			return;
		}
		
		
		//colocar o resultado num array e retorna-lo
		$contents = mysql_fetch_array($result, MYSQL_ASSOC);
		return $contents;
    }
    
	function update($my_id, $data)
	{
		$data['data_modificado'] = date('Y-m-d \- H:i:s');
		
		//Dados verificados, inserir os dados.  ---- morada_inicial ---- data_registo ---
		$sql = "UPDATE " . $this->t_classificados . " SET " .  
				"titulo='" . $data['titulo'] . "', " .
				"preco='" . $data['preco'] . "', " .
				"id_cadeira='" . $data['cadeira'] . "', " .
				"data_mod='" . $data['data_modificado'] . "', " .
				"descricao='" . $data['descricao'] . "' " .
				"WHERE id='" . $my_id . "'"; 
		
		//echo $sql;		  
		$res = mysql_query($sql);
		if(!$res)
		{
			if(Debug)
				echo  mysql_error() . " @ function Update, nao foi possivel actualizar classificado <br />";
			echo 'Por motivos tÃ©cnicos nÃ£o foi possÃ­vel processar o seu pedido, por favor informe o administrador se o erro persistir';
			die();
			exit;
			return 0;
		}
		
		return $my_id;
	}
	
	function delete($id)
	{
		//Dados verificados, inserir os dados.  ---- morada_inicial ---- data_registo ---
		$sql = "DELETE FROM " . $this->t_classificados . 
				" WHERE id='" . $id . "'"; 
		
		//echo $sql;		  
		$res = mysql_query($sql);
		if(!$res)
		{
			if(Debug)
				echo  mysql_error() . " @ function Registar, nao foi possivel adicionar o utilizador <br />";
			echo 'Por motivos tÃ©cnicos nÃ£o foi possÃ­vel processar o seu pedido, por favor informe o administrador se o erro persistir';
			die();
			exit;
			return 0;
		}
		
		return $id;
	}
}
?>